#ifndef DIALOGFILEMANAGER_H
#define DIALOGFILEMANAGER_H

#include <QDialog>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QButtonGroup>
#include <QPushButton>
#include <QStack>
#include <QLabel>
#include <QMouseEvent>
#include <QScrollArea>
#include <QSpacerItem>
#include <QWidget>
#include <QtSvg/QSvgWidget>
#include <QMessageBox>
#include <QException>
#include <QTimer>
#ifdef Q_OS_ANDROID

#include "JNIManager.h"
#include "smbManager.h"
#include "dialogSmbLogin.h"
#include "fileItemWidget.h"
#include "textButton.h"
namespace Ui{
    class dialogFileManager;
}




// 安卓端文件资源管理器 用于导入导出
class DialogFileManager : public QDialog
{
    Q_OBJECT
public:
    DialogFileManager(int type, QWidget* parent=nullptr);    // type=0: 选择文件  type=1: 选择文件夹
    ~DialogFileManager();

    QString getResult();

public slots:
    void on_pushButton_cancel_clicked();
    void on_pushButton_select_clicked();

    void on_file_clicked(QString text, FileItemWidget::FileType type);
    void on_dir_clicked(QString text);
    void on_ip_delete(QString ip);

    void on_newStorage_connected(QString ip);
    void on_button_root_clicked();
    void on_button_local_clicked();
    void on_button_USB_clicked();
    void on_button_SMB_clicked();
    void on_button_add_clicked();
    void on_button_close_clicked();



private:
    void    init();
    void    loadPage();
    void    loadFolderPage();
    void    loadFilePage(QStringList fileList);

    QString getCurrentDir();



private:


    DialogSMBLogin*         _widget_smbLogin;
    QSpacerItem*            _fileSpacer;
    QSpacerItem*            _dirSpacer;

    // 文件列表
    QVector<FileItemWidget*>    _fileList_widget;
    // 文件夹列表 + 路径
    QVector<TextButton*>    _dirList_button;
    QVector<QStack<QString>*>    _dirList_path;

    QVector<QPushButton*>   _storageList_button;


    int         _page;      // 本地=0 USB=1 smb=2


    int         _type;      // 文件=0 文件夹=1


    QString                 _basePath;
    QStringList             _usbPath;


    QString     _resultPath;
    QString     _resultType;

    Ui::dialogFileManager* ui;


};

#endif // DIALOGFILEMANAGER_H
#endif
